﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net;
using System.Net.Mime;
using System.Collections;

namespace CashNote
{
    class SendMail
    {
        public static void CreateCopyMessage(string server)
        {
            MailAddress from = new MailAddress("ben@contoso.com", "Ben Miller");
            MailAddress to = new MailAddress("jane@contoso.com", "Jane Clayton");
            MailMessage message = new MailMessage(from, to);
            // message.Subject = "Using the SmtpClient class.";
            message.Subject = "Using the SmtpClient class.";
            message.Body = @"Using this feature, you can send an e-mail message from an application very easily.";
            // Add a carbon copy recipient.
            MailAddress copy = new MailAddress("Notification_List@contoso.com");
            message.CC.Add(copy);
            SmtpClient client = new SmtpClient(server);
            // Include credentials if the server requires them.
            client.Credentials = CredentialCache.DefaultNetworkCredentials;
            Console.WriteLine("Sending an e-mail message to {0} by using the SMTP host {1}.",
                 to.Address, client.Host);
            client.Send(message);
        }

        public static void CreateMessageWithAttachment(string server)
        {
            // Specify the file to be attached and sent.
            // This example assumes that a file named Data.xls exists in the
            // current working directory.
            string file = "data.xls";
            // Create a message and set up the recipients.
            MailMessage message = new MailMessage(
               "jane@contoso.com",
               "ben@contoso.com",
               "Quarterly data report.",
               "See the attached spreadsheet.");

            // Create  the file attachment for this e-mail message.
            Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
            // Add time stamp information for the file.
            ContentDisposition disposition = data.ContentDisposition;
            disposition.CreationDate = System.IO.File.GetCreationTime(file);
            disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
            disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
            // Add the file attachment to this e-mail message.
            message.Attachments.Add(data);
            //Send the message.
            SmtpClient client = new SmtpClient(server);
            // Add credentials if the SMTP server requires them.
            client.Credentials = CredentialCache.DefaultNetworkCredentials;
            client.Send(message);
            // Display the values in the ContentDisposition for the attachment.
            ContentDisposition cd = data.ContentDisposition;
            Console.WriteLine("Content disposition");
            Console.WriteLine(cd.ToString());
            Console.WriteLine("File {0}", cd.FileName);
            Console.WriteLine("Size {0}", cd.Size);
            Console.WriteLine("Creation {0}", cd.CreationDate);
            Console.WriteLine("Modification {0}", cd.ModificationDate);
            Console.WriteLine("Read {0}", cd.ReadDate);
            Console.WriteLine("Inline {0}", cd.Inline);
            Console.WriteLine("Parameters: {0}", cd.Parameters.Count);
            foreach (DictionaryEntry d in cd.Parameters)
            {
                Console.WriteLine("{0} = {1}", d.Key, d.Value);
            }
            data.Dispose();
        }

        public void SendMailWithAttachment(string AttPath)
        {
            //mail message   
            MailMessage myMail = new MailMessage();
            myMail.From = new MailAddress("819205881@qq.com");
            myMail.To.Add(new MailAddress("39732531@qq.com"));
            myMail.Subject = "NoteBack - " + System.DateTime.Now.ToString();
            myMail.SubjectEncoding = Encoding.UTF8;
            myMail.Body = "You are successed.";
            myMail.BodyEncoding = Encoding.UTF8;
            myMail.IsBodyHtml = false;
            myMail.Priority = MailPriority.High;
            //myMail.CC.Add(new MailAddress("yt39732531@gmail.com"));
            //myMail.Bcc.Add(new MailAddress("yt39732531@gmail.com"));

            // Create  the file attachment for this e-mail message.
            //string file = @"E:\Project\NET\CashNote\Data\note.rar";
            Attachment data = new Attachment(AttPath, MediaTypeNames.Application.Octet);
            // Add time stamp information for the file.
            ContentDisposition disposition = data.ContentDisposition;
            disposition.CreationDate = System.IO.File.GetCreationTime(AttPath);
            disposition.ModificationDate = System.IO.File.GetLastWriteTime(AttPath);
            disposition.ReadDate = System.IO.File.GetLastAccessTime(AttPath);
            // Add the file attachment to this e-mail message.
            myMail.Attachments.Add(data);

            //smtp client   
            SmtpClient sender = new SmtpClient();
            sender.Host = "smtp.qq.com";
            //sender.Port = 587;
            sender.Credentials = new NetworkCredential("819205881@qq.com", "woshishabi");
            sender.DeliveryMethod = SmtpDeliveryMethod.Network;
            //sender.EnableSsl = true;
            try
            {
                string sStatus = "Mail Send Is Success";
                sender.SendAsync(myMail, sStatus);
                //Console.WriteLine("Success");
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed.Exception:{0}", e.Message);
            }
            //Console.Write("Press any key to quit...");
            //Console.ReadKey();
        }

    }

}

